package com.biblioteca.persistencia;

import com.google.appengine.api.datastore.Key;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.jdo.annotations.Persistent;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;

@Entity
public class Libro implements Serializable {

    @Id
    private String isbn;
    @Basic
    private String titulo;
    @Basic
    private String autor;
    @Basic
    private String Editorial;
    @Basic
    private String tieneCD;
    @Basic
    private String genero;
    @Basic
    private Boolean disponible;
    @Basic
    private int numComentarios;
    @Persistent
    private String content;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date anoPublicacion;
    @Basic
    private List<Key> votos = new ArrayList<Key>();
    @Basic
    private Integer cantidad;   
    @Basic
    private String precio;
    @Basic
    @OneToMany(mappedBy = "libro", fetch = FetchType.EAGER)
    List<Comentario> comentarios = new ArrayList<Comentario>();
    
    @Basic
    private String imagen;

    public Libro() {
        this.disponible = true;
    }

    public Libro(String isbn, String titulo, String autor, String editorial, String tieneCD, String genero, String content, Date anoPublicacion) {
        this.isbn = isbn;
        this.titulo = titulo;
        this.autor = autor;
        this.Editorial = editorial;
        this.tieneCD = tieneCD;
        this.content = content;
        this.genero = genero;
        this.disponible = true;
        this.anoPublicacion = anoPublicacion;
    }
    
    public String getImagen() {
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }

    public Date getAnoPublicacion() {
        return anoPublicacion;
    }

    public String getGenero() {
        return genero;
    }

    public void setAnoPublicacion(Date anoPublicacion) {
        this.anoPublicacion = anoPublicacion;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    public Boolean getDisponible() {
        return disponible;
    }

    public void setDisponible(Boolean disponible) {
        this.disponible = disponible;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public String getEditorial() {
        return Editorial;
    }

    public void setEditorial(String editorial) {
        Editorial = editorial;
    }

    public String getTieneCD() {
        return tieneCD;
    }

    public void setTieneCD(String tieneCD) {
        this.tieneCD = tieneCD;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public List<Key> getVotos() {
            return votos;        
    }

    public void setVotos(List<Key> votos) {
        this.votos = votos;
    }
    


    public List<Comentario> getComentarios() {
        return comentarios;
    }

    public int getNumComentarios() {
        return numComentarios;
    }



    public void setComentarios(List<Comentario> comentario) {
        this.comentarios = comentario;

    }

    @Override
    public String toString() {
        return "Libro{" + "isbn=" + isbn + ", titulo=" + titulo + ", autor=" + autor + ", Editorial=" + Editorial + ", tieneCD=" + tieneCD + ", genero=" + genero + ", disponible=" + disponible + ", content=" + content + ", anoPublicacion=" + anoPublicacion + ", votos=" + votos + ", comentario=" + comentarios + '}';
    }
    

    public String getPrecio() {
        return precio;
    }

    public void setPrecio(String precio) {
        this.precio = precio;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public void setNumComentarios(int numComentarios) {
        this.numComentarios = numComentarios;
    }

    
    
    
}